package com.tes.pagecode;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.servlet.http.HttpServletRequest;

import com.tes.bd.BusinessDelegate;
import com.tes.entity.Funcionalidad;
import com.tes.entity.Perfil;

public class PerfilBean implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 6357761326209492716L;
	
	private  HtmlDataTable tablaDisponibles;
	private  HtmlDataTable tablaActuales;
	private List<String> perfiles = new ArrayList<String>();
	private String perfil;
	private List<String> funcionalidadesDisponibles = new ArrayList<String>();
	private String funcionalidadDisponible ;
	
	private List<String> funcionalidadesActuales = new ArrayList<String>();
	private String funcionalidadActual ;
	
	public PerfilBean(){
		perfiles = BusinessDelegate.getInstance().obtenerPerfiles();
//		perfil = this.getPerfil();
//		System.out.println("PERFIL"+perfil);
	}
	
	public HtmlDataTable getTablaDisponibles() {
		return tablaDisponibles;
	}

	public void setTablaDisponibles(HtmlDataTable tablaDisponibles) {
		this.tablaDisponibles = tablaDisponibles;
	}

	public HtmlDataTable getTablaActuales() {
		return tablaActuales;
	}

	public void setTablaActuales(HtmlDataTable tablaActuales) {
		this.tablaActuales = tablaActuales;
	}

	public List<String> getPerfiles() {
		return perfiles;
	}

	public void setPerfiles(List<String> perfiles) {
		this.perfiles = perfiles;
	}

	public String getPerfil() {
		return perfil;
	}

	public void setPerfil(String perfil) {
		this.perfil = perfil;
	}

	public List<String> getFuncionalidadesDisponibles() {
		return funcionalidadesDisponibles;
	}

	public void setFuncionalidadesDisponibles(
			List<String> funcionalidadesDisponibles) {
		this.funcionalidadesDisponibles = funcionalidadesDisponibles;
	}

	public String getFuncionalidadDisponible() {
		return funcionalidadDisponible;
	}

	public void setFuncionalidadDisponible(String funcionalidadDisponible) {
		this.funcionalidadDisponible = funcionalidadDisponible;
	}

	public List<String> getFuncionalidadesActuales() {
		return funcionalidadesActuales;
	}

	public void setFuncionalidadesActuales(
			List<String> funcionalidadesActuales) {
		this.funcionalidadesActuales = funcionalidadesActuales;
	}

	public String getFuncionalidadActual() {
		return funcionalidadActual;
	}

	public void setFuncionalidadActual(String funcionalidadActual) {
		this.funcionalidadActual = funcionalidadActual;
	}
	public void refrescar(){
		perfil = this.getPerfil();
		System.out.println("PERFIL: "+perfil);
		funcionalidadesActuales = BusinessDelegate.getInstance().obtenerFuncionalidadesActuales(perfil);
		funcionalidadesDisponibles = BusinessDelegate.getInstance().obtenerFuncionalidadesDisponibles(perfil);
		ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
	    try {
			ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void quitar(){
		BusinessDelegate.getInstance().quitarFuncionalidad(this.getPerfil(),this.getFuncionalidadDisponible());
		funcionalidadesActuales.remove(this.getFuncionalidadDisponible());
		this.setFuncionalidadesActuales(funcionalidadesActuales);
		funcionalidadesDisponibles.add(this.getFuncionalidadDisponible());
		this.setFuncionalidadesDisponibles(funcionalidadesDisponibles);
	}
	public void agregar(){
		BusinessDelegate.getInstance().agregarFuncionalidad(this.getPerfil(),this.getFuncionalidadDisponible());
		funcionalidadesActuales.add(this.getFuncionalidadDisponible());
		this.setFuncionalidadesActuales(funcionalidadesActuales);
		funcionalidadesDisponibles.remove(this.getFuncionalidadDisponible());
		this.setFuncionalidadesDisponibles(funcionalidadesDisponibles);
	}
}
